Communications devices, such as computers and mobile telephones, are able to communicate using a number of different coders/decoders (codecs). A codec is a device or computer program (i.e. hardware, software, or a combination of the two) capable of encoding and/or decoding a data which is sent from and/or received by the communications device. Codecs are typically used to encode audio and/or video data streams. A codec will typically use a particular, standardised, protocol (specific to that type of codec) to encode and decode the data.
There are a large number of codecs available for communications, and any given communications device will likely be able to communicate using (i.e. have available) a limited number of these codecs. The ability to use a particular codec will depend on a number of factors, including (for example) the processing power of the device, if suitable dedicated hardware is available, and whether appropriate software is installed.
Each codec has certain strengths (and corresponding weaknesses) which make the codec more suitable for certain communications and less suitable for other types of communications. For example, some codecs are optimised for a relatively high bandwidth, while are optimised for require a much lower bandwidth (with a corresponding drop in quality). Some codecs are more resilient to communication problems, such as dropped packets, than others. Certain codecs are optimised for a particular type of media content, such as speech, while others are more suited for a different type of media content e.g. music.
One known method of selecting a codec for use in a communications session between two communications devices, or endpoints, as used in the Session Initiation Protocol (SIP), is to use a Session Description Protocol (SDP) offer-answer model to agree on a codec. In this model, the first of the communications devices sends an offer message to the second of the communications devices. This offer message will list all of the codecs which the first device is able to communicate using (i.e. the codecs that are available to that communications device or that are compatible with the communications device). The offer message is passed through a network to the second device. The second device, upon receiving the offer message, will determine which (if any) of the offered codecs in the offer message are compatible with the second device, i.e. whether there are any codecs which are mutually compatible. A response is then sent from the second device back to the first. The response will either accept the offer and specify one or more mutually compatible codecs selected from those offered; or will reject (through e.g. the use of a 488 “Not acceptable here” message) the offer message because none of the offered codecs are compatible with the second device. This process enables a mutually compatible codec to be identified (if one exists) to be used in the communications session.
However, in some cases, the two communications devices do not share a common codec. Consequently, transcoding hardware (such as a media gateway) may be used in the network at a point along the communication path between the two communications devices. A transcoder works by receiving communications, encoded using a first codec, from a first communications device, transcoding the communications so that they are encoded using a second codec, and sending the result on to the second communications device. The transcoder may equally transcode communications sent along a return path; i.e. the transcoder is able to transcode from the second codec to the first. As such a transcoder comprises, in itself, one or more codecs to enable this transcoding. The transcoder therefore enables two communications devices to communicate where they would not otherwise be able to.
One method of setting up a communications session when a transcoder is available in a network is to send an offer message from a first communications device to a second communications device through a network. The offer message initially lists all the codecs available to the first communications device. As the offer message is passed through the network, any network node having a transcoding resource modifies the offered list of codecs to include any codecs which can be made available if the transcoding resource is used. As a result, when the offer message reaches the recipient device, the list of available codecs is greatly expanded. The recipient device may then select any of the offered codecs, including those codecs which require transcoding.
One problem with such an arrangement is that it increases the probability of a transcoder being used, even when there is a commonly available codec (i.e. the use of the transcoding resource was not essential for the session to be set up). This is a problem since transcoding resources require substantial processing power, and consequently are a limited resource in a network.
One known method of overcoming this problem is to use a retry system. In this system a first offer message is sent from the first communications device to the second communications device through the network. This first offer message lists codecs compatible with the first device, and is left unmodified by any network node it passes through, even if that node has a transcoding resource available. The second device receives the unmodified offer message, and determines whether there are any mutually compatible codecs. If there are no mutually compatible codecs, then the second device rejects the offer message.
The rejection message is passed back through the network towards the first device. However, when this rejection notice is received at a network node having a transcoding resource, the network node does not pass on the rejection message, but instead sends a second offer message. This second offer message includes any further codecs which are available should the transcoding resource be used. This second, modified, offer message is then received at the second communications device, which may accept any of the transcoded codecs in the usual fashion.
Therefore, the probability of establishing a communications session is increased, and the use of transcoders is limited to situations where one is required.
The problems with the two prior art systems described above is that, in one case, transcoders are overused, in a manner which is wasteful of network resources; in the other case, transcoders are only used if necessary, but may result in an unsuitable codec being selected, where superior communications would have been available should a transcoder have been used.